home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / assywind.arc / WINTUTOR.PAS < prev   
Pascal/Delphi Source File  |  1986-07-03  |  8KB  |  221 lines

  1. program WinTutor(input,output);
  2. {$Iwindo.inc}
  3.  
  4. type str80 = string[80];
  5. var i: integer;
  6.     a: string[127];
  7.     j,k: byte;
  8. const
  9.     stra : array [1..13] of str80 = (
  10.       '',
  11.       'The   windowing  procedures  in   the   file',
  12.       'WINDO.INC   are  a  set  of  public   domain',
  13.       'routines  that allow  Turbo PASCAL to create',
  14.       'and use windows.   The windows may be of any',
  15.       'size (from 2 X 2 to 80 X 25)  and color, and',
  16.       'may  have  one  of several different  border',
  17.       'styles, including  no border.  Once inside a',
  18.       'window,  the normal  Turbo PASCAL procedures',
  19.       '"textcolor" and "textbackground" may be used',
  20.       'to change character attributes.  The  window',
  21.       'routines automatically determine whether you',
  22.       'are using a color or monochrome display.');
  23.  
  24.     strb : array [1..14] of str80 = (
  25.       '',
  26.       'The window procedures package consists of four  procedures;',
  27.       '"Initwindo", "Makewindo",  "Removewindo" and  "Titlewindo".',
  28.       'The procedures are described in the following windows:',
  29.       'INITWINDO',
  30.       '',
  31.       'FORMAT:   INITWINDO (textcolor,textbackground : integer);',
  32.       '',
  33.       'Initwindo  initializes  several variables required  by  the',
  34.       'windowing package,  as well as selecting the foreground and',
  35.       'background colors of the initial screen display.  Initwindo',
  36.       'must be called before using either of the other procedures.',
  37.       'After using Initwindo, normal action is to clear the screen',
  38.       'with clrscr.');
  39.  
  40.     strc : array [1..16] of str80 = (
  41.       'MAKEWINDO',
  42.       '',
  43.       'FORMAT:  MAKEWINDO (X1,Y1,X2,Y2,txtcolor,txtbkgnd,border : integer);',
  44.       '',
  45.       'Makewindo puts a new blank window on the display.  The window starts',
  46.       'at the upper left corner (X1,Y1)  and ends at the lower right corner',
  47.       '(X2,Y2).   If a border exists,  the actual dimensions  of the window',
  48.       'will be 2 less than indicated in the Makewindo statement. The border',
  49.       'can be one of the following:',
  50.       '',
  51.       '   singleb  - single border           doubleb  - double border',
  52.       '   solidb   - solid border            noneb    - no border',
  53.       '   mixedb   - single sides, double top border',
  54.       '   dimondb  - diamond border          circleb  - circles border',
  55.       '   lhatchb  - light hatch border      mhatchb  - medium hatch border',
  56.       '   dhatchb  - dense hatch border');
  57.  
  58.     strd : array [1..6] of str80 = (
  59.       'REMOVEWINDO',
  60.       'FORMAT:  REMOVEWINDO;',
  61.       '',
  62.       'Removewindo removes  the last window',
  63.       'that was placed on the screen by the',
  64.       'Makewindo procedure.');
  65.  
  66.     stre : array [1..6] of str80 = (
  67.       'TITLEWINDO',
  68.       'FORMAT:  TITLEWINDO (title: string[80]);',
  69.       '',
  70.       'Titlewindo places a title in the upper',
  71.       'border of the current window.  This is',
  72.       'strictly an option.');
  73.  
  74.     strf : array [1..6] of str80 = (
  75.       '',
  76.       ' The maximum  number  of windows that',
  77.       ' may be on the screen at any one time',
  78.       ' is   specified   by   the   variable',
  79.       ' "maxwin".  Maxwin  is  currently  30',
  80.       ' and is limited to a maximum of 255.');
  81.  
  82.     stri : array [1..12] of str80 = (
  83.       '',
  84.       ' There are three utility procedures that may be',
  85.       ' of use:',
  86.       '',
  87.       ' Bleep(number_of_bleeps : byte);',
  88.       ' Set_cursor(Cursor_Size : byte);',
  89.       ' DispLine(colb,rowb,attrib : byte, str : str80);',
  90.       '',
  91.       ' colb and rowb is relative to the entire screen.',
  92.       ' attrib := backgroundcolor*16 + textcolor',
  93.       ' str is a string of length 80.',
  94.       ' backgroundcolor should be less than 8.');
  95.  
  96.     strg : array [1..18] of str80 = (
  97.       ' The procedures are used as follows:',
  98.       '',
  99.       '  Program xxx(Input,Output);',
  100.       '  {$IWindo.Inc}',
  101.       '  ...your variables and procedures...',
  102.       '  Begin',
  103.       '    .',
  104.       '    Initwindo(textcolor,textbackground);',
  105.       '    ClrScr;',
  106.       '    .',
  107.       '    Makewindo(X1,Y1,X2,Y2,txtcol,txtbkgnd,brdr);',
  108.       '    Titlewindo(''This is the window title'');',
  109.       '    .',
  110.       '    Removewindo;',
  111.       '    .',
  112.       '  End.',
  113.       '',
  114.       ' Use one removewindo for each makewindo.');
  115.  
  116.     strh : array [1..7] of str80 = (
  117.       'If you have any questions or comments,',
  118.       'please write to or call:',
  119.       '',
  120.       '   Michael Burton',
  121.       '   15540 Boot Hill Rd.',
  122.       '   Hayden Lake, ID 83835',
  123.       '   (208)772-9347 (after 1800 PST)');
  124.  
  125. begin
  126.    set_cursor(0);
  127.    initwindo(blue,cyan);
  128.    clrscr;
  129.    For i := 1 to 30 do
  130.    begin
  131.       j := random(69);
  132.       k := random(20);
  133.       makewindo(j+1,k+1,j+11,k+5,yellow,red,lhatchb);
  134.       gotoxy(2,2);
  135.       Write('WINDOWS');
  136.    end;
  137.    delay(4000);
  138.    for i := 1 to 30 do removewindo;
  139.    gotoxy(25,1);
  140.    writeln('Turbo PASCAL Windows Tutorial');
  141.    gotoxy(10,2);
  142.    textcolor(black);
  143.    writeln('For each of the following displays, press RETURN to continue.');
  144.    gotoxy(14,12);
  145.    writeln('This is the original screen. It is not a window.');
  146.    readln;
  147.  
  148.    makewindo(3,3,49,18,black,green,mixedb);
  149.    titlewindo(' Turbo PASCAL Windows ');
  150.    For j :=1 to 13 do DispLine(3,j+2,green*16+black,stra[j]);
  151.    readln;
  152.    makewindo(1,5,61,23,yellow,red,singleb);
  153.    titlewindo(' Turbo PASCAL Windows (Continued) ');
  154.    For j :=1 to 4 do DispLine(1,j+4,red*16+yellow,strb[j]);
  155.    DispLine(4,10,blue*16+white,strb[5]);
  156.    For j :=6 to 8 do DispLine(1,j+5,red*16+cyan,strb[j]);
  157.    For j :=9 to 14 do DispLine(1,j+5,red*16+white,strb[j]);
  158.    readln;
  159.  
  160.    makewindo(7,4,77,24,lightmagenta,blue,solidb);
  161.    titlewindo(' Turbo PASCAL Windows (Continued) ');
  162.    DispLine(11,5,red*16+yellow,strc[1]);
  163.    For j :=2 to 4 do DispLine(7,j+5,blue*16+lightred,strc[j]);
  164.    For j :=5 to 16 do DispLine(7,j+5,blue*16+yellow,strc[j]);
  165.    readln;
  166.  
  167.    makewindo(13,10,51,21,black,brown,doubleb);
  168.    titlewindo(' Turbo PASCAL Windows (Continued) ');
  169.    DispLine(17,11,magenta*16+white,strd[1]);
  170.    DispLine(13,13,brown*16+yellow,strd[2]);
  171.    For j :=3 to 6 do DispLine(13,j+11,brown*16+white,strd[j]);
  172.    readln;
  173.  
  174.    makewindo(15,11,57,22,red,lightgray,dimondb);
  175.    titlewindo(' Turbo PASCAL Windows (Continued) ');
  176.    DispLine(19,13,blue*16+lightgreen,stre[1]);
  177.    DispLine(15,15,lightgray*16+black,stre[2]);
  178.    For j :=3 to 6 do DispLine(15,j+13,lightgray*16+green,stre[j]);
  179.    readln;
  180.  
  181.    makewindo(12,16,49,22,black,brown,noneb);
  182.    For j :=1 to 6 do DispLine(11,j+14,brown*16+black,strf[j]);
  183.    readln;
  184.  
  185.    makewindo(20,8,70,22,yellow,red,circleb);
  186.    titlewindo(' Utility Procedures ');
  187.    For j :=1 to 4  do DispLine(20,j+7,red*16+yellow,stri[j]);
  188.    For j :=5 to 7  do DispLine(20,j+7,red*16+white,stri[j]);
  189.    For j :=8 to 12 do DispLine(20,j+7,red*16+yellow,stri[j]);
  190.    readln;
  191.  
  192.    makewindo(29,3,79,25,yellow,magenta,mhatchb);
  193.    For j :=1 to 18 do DispLine(29,j+3,magenta*16+yellow,strg[j]);
  194.    readln;
  195.  
  196.    makewindo(20,8,60,17,black,brown,dhatchb);
  197.    For j :=1 to 7 do DispLine(21,j+8,brown*16+white,strh[j]);
  198.    readln;
  199.  
  200.    removewindo;
  201.    removewindo;
  202.    removewindo;
  203.    removewindo;
  204.    removewindo;
  205.    removewindo;
  206.    removewindo;
  207.    removewindo;
  208.    removewindo;
  209.    gotoxy(1,2);
  210.    clreol;
  211.    gotoxy(1,12);
  212.    clreol;
  213.    gotoxy(21,12);
  214.    writeln('This concludes the windows tutorial...');
  215.    delay(2500);
  216.    set_cursor(2);
  217.    textcolor(white);
  218.    textbackground(black);
  219.    clrscr;
  220. end.
  221.